/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package entities;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
import javax.persistence.Basic;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

/**
 *
 * @author Alejandro
 */
@Entity
@Table(name = "PARTIDO")
@NamedQueries({
    @NamedQuery(name = "Partido.findAll", query = "SELECT p FROM Partido p")})
public class Partido implements Serializable {
    private static final long serialVersionUID = 1L;
    // @Max(value=?)  @Min(value=?)//if you know range of your decimal fields consider using these annotations to enforce field validation
    @Id
    @Basic(optional = false)
    @Column(name = "ID_PARTIDO")
    private BigDecimal idPartido;
    @Basic(optional = false)
    @Column(name = "FECHA")
    @Temporal(TemporalType.TIMESTAMP)
    private Date fecha;
    @Basic(optional = false)
    @Column(name = "HORA")
    @Temporal(TemporalType.TIMESTAMP)
    private Date hora;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "partido")
    private List<JuezXPartido> juezXPartidoList;
    @OneToOne(cascade = CascadeType.ALL, mappedBy = "partidoIdPartido")
    private Resultado resultado;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "partidoIdPartido")
    private List<Precio> precioList;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "partidoIdPartido")
    private List<Tarjeta> tarjetaList;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "partidoIdPartido")
    private List<Anotacion> anotacionList;
    @JoinColumn(name = "FASE_ID_FASE", referencedColumnName = "ID_FASE")
    @ManyToOne(optional = false)
    private Fase faseIdFase;
    @JoinColumn(name = "ESTADIO_ID_ESTADIO", referencedColumnName = "ID_ESTADIO")
    @ManyToOne(optional = false)
    private Estadio estadioIdEstadio;
    @JoinColumn(name = "EQUIPO_ID_EQUIPO", referencedColumnName = "ID_EQUIPO")
    @ManyToOne
    private Equipo equipoIdEquipo;
    @JoinColumn(name = "EQUIPO_ID_EQUIPO1", referencedColumnName = "ID_EQUIPO")
    @ManyToOne
    private Equipo equipoIdEquipo1;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "partido")
    private List<Sillaxpartido> sillaxpartidoList;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "partido")
    private List<JugadorXPartido> jugadorXPartidoList;

    public Partido() {
    }

    public Partido(BigDecimal idPartido) {
        this.idPartido = idPartido;
    }

    public Partido(BigDecimal idPartido, Date fecha, Date hora) {
        this.idPartido = idPartido;
        this.fecha = fecha;
        this.hora = hora;
    }

    public BigDecimal getIdPartido() {
        return idPartido;
    }

    public void setIdPartido(BigDecimal idPartido) {
        this.idPartido = idPartido;
    }

    public Date getFecha() {
        return fecha;
    }

    public void setFecha(Date fecha) {
        this.fecha = fecha;
    }

    public Date getHora() {
        return hora;
    }

    public void setHora(Date hora) {
        this.hora = hora;
    }

    public List<JuezXPartido> getJuezXPartidoList() {
        return juezXPartidoList;
    }

    public void setJuezXPartidoList(List<JuezXPartido> juezXPartidoList) {
        this.juezXPartidoList = juezXPartidoList;
    }

    public Resultado getResultado() {
        return resultado;
    }

    public void setResultado(Resultado resultado) {
        this.resultado = resultado;
    }

    public List<Precio> getPrecioList() {
        return precioList;
    }

    public void setPrecioList(List<Precio> precioList) {
        this.precioList = precioList;
    }

    public List<Tarjeta> getTarjetaList() {
        return tarjetaList;
    }

    public void setTarjetaList(List<Tarjeta> tarjetaList) {
        this.tarjetaList = tarjetaList;
    }

    public List<Anotacion> getAnotacionList() {
        return anotacionList;
    }

    public void setAnotacionList(List<Anotacion> anotacionList) {
        this.anotacionList = anotacionList;
    }

    public Fase getFaseIdFase() {
        return faseIdFase;
    }

    public void setFaseIdFase(Fase faseIdFase) {
        this.faseIdFase = faseIdFase;
    }

    public Estadio getEstadioIdEstadio() {
        return estadioIdEstadio;
    }

    public void setEstadioIdEstadio(Estadio estadioIdEstadio) {
        this.estadioIdEstadio = estadioIdEstadio;
    }

    public Equipo getEquipoIdEquipo() {
        return equipoIdEquipo;
    }

    public void setEquipoIdEquipo(Equipo equipoIdEquipo) {
        this.equipoIdEquipo = equipoIdEquipo;
    }

    public Equipo getEquipoIdEquipo1() {
        return equipoIdEquipo1;
    }

    public void setEquipoIdEquipo1(Equipo equipoIdEquipo1) {
        this.equipoIdEquipo1 = equipoIdEquipo1;
    }

    public List<Sillaxpartido> getSillaxpartidoList() {
        return sillaxpartidoList;
    }

    public void setSillaxpartidoList(List<Sillaxpartido> sillaxpartidoList) {
        this.sillaxpartidoList = sillaxpartidoList;
    }

    public List<JugadorXPartido> getJugadorXPartidoList() {
        return jugadorXPartidoList;
    }

    public void setJugadorXPartidoList(List<JugadorXPartido> jugadorXPartidoList) {
        this.jugadorXPartidoList = jugadorXPartidoList;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (idPartido != null ? idPartido.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof Partido)) {
            return false;
        }
        Partido other = (Partido) object;
        if ((this.idPartido == null && other.idPartido != null) || (this.idPartido != null && !this.idPartido.equals(other.idPartido))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "entities.Partido[ idPartido=" + idPartido + " ]";
    }
    
}
